/** 
* Projet AP5 - Agenda PDA
* ActivityPanel.java
*/

package pda.view;

import java.awt.Container;
import java.awt.Color;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Dimension;
import java.awt.Component;
import java.awt.Font;
import java.awt.FlowLayout;

import java.awt.event.MouseAdapter;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.ActionEvent;

import pda.control.AgendaControl;
import pda.control.ContactCtrl;

import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPopupMenu;
import javax.swing.JInternalFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JFormattedTextField;
import javax.swing.text.MaskFormatter;
import javax.swing.JCheckBox;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.DefaultListModel;
import javax.swing.JTextField;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import java.util.ArrayList;


public class ActivityPanel extends MouseAdapter implements ActionListener{

//######################################################################################
//					private implementation
//######################################################################################
	//panel d'evenement de base

	/** Panneau d'ajout d'activite*/
	private JPanel panelAct;
	/** Panneau */
	private JPanel textPane;
	/** Panneau */
	private JPanel panelInvite;
	/** Panneau */
	private JPanel panelDetails;

	/** Etiquette */
	private JLabel typeActivityLbl;
	/** Etiquette */
	private JLabel dateChoosen;

	/** Zone de texte pour entrer le motif */
	private JTextArea motif;

	/** Zone de texte pour entrer l'heure de debut */
	private JFormattedTextField debH; 
	/** Zone de texte pour entrer les minutes de l'heure de debut */
	private JFormattedTextField debM;
	/** Zone de texte pour entrer l'heure de fin */
	private JFormattedTextField finH;
	/** Zone de texte pour entrer les minutes de l'heure de fin */
	private JFormattedTextField finM;


	/** Bouton Annuler */
	private JButton cancel;
	/** Bouton Valider */
	private JButton validate;
	/** Bouton Details */
	private JButton details;

	/** Case a cocher pour la semaine */
	private JCheckBox semaine;
	/** Case a cocher pour le jour */
	private JCheckBox jour;

	/** Zone de texte pour entrer le site */
	private JTextField site;
	/** Zone de texte pour entrer le lieu */
	private JTextField lieu;
	/** Zone de texte pour entrer le professeur */
	private JTextField prof;
	/** Zone de texte pour entrer la matiere */
	private JTextField mati;
	/** Zone de texte pour entrer la liste d'invites */
	private JTextField list;	
	/** Zone de texte pour entrer l'initiateur */
	private JTextField init;
	/** Zone de texte pour entrer l'invite */
	private JTextField invi;
	/** Zone de texte pour entrer l'email */
	private JTextField email;
	/** Zone de texte pour entrer la duree */
	private JTextField duree;

	/** Liste */
	private JList newListe;

	/** Ojbet de la classe ContactCtrl */
	private ContactCtrl agenda;

	/** Chaine de caractère de selection */
	private String select;

	/** Ojbet de la classe AgendaControl */
	private AgendaControl controller;
		
	/** Ojbet de la classe AgendaView */
	private AgendaView vue;

	/** Permet d'editer un string */
	private MaskFormatter mask;

	/** Etiquette du motif */
	private JLabel motifLbl;
	/** Etiquette pour le debut de l'activite */
	private JLabel debLbl;
	/** Etiquette pour la fin de l'activite */
	private JLabel finLbl;
	/** Etiquette pour la repetition */
	private JLabel repetLbl;
	/** Etiquette */
	private JLabel sep1;
	/** Etiquette */
	private JLabel sep2;

//######################################################################################
//								constructor
//######################################################################################

/**
* Le constructeur initialise la classe avec le controller pour les event lie a la validation 
* de l'ajout d'activite; la vue pour pouvoir afficher le panneau d'ajout 
* @param controller le controller principal pour enregistrer les donn&eacute;es 
* @param vue la vue principale pour agir dessus
*/
	public ActivityPanel(AgendaControl controller, AgendaView vue){
		this.controller = controller;
		this.vue = vue ;
		try  { 
			mask = new MaskFormatter("##"); 
		} catch ( java.text.ParseException e) { System.out.println(e.getMessage());}
			mask.setValidCharacters("0123456789");
	}

//######################################################################################
//								methodes
//######################################################################################


	public void actionPerformed( ActionEvent e){
		String action = e.getActionCommand();
		
		if(action.equals("annulerListe")){
			vue.getMainPanel().remove(panelInvite);
			vue.getMainPanel().add(panelAct);
			vue.refresh();
			
		}else if(action.equals("validerListe")){
			String tmp ="";
			Object[] lesInvites = ((DefaultListModel)newListe.getModel()).toArray();
			if (lesInvites.length != 0 ){
				for (Object unInvite : lesInvites)
					tmp += unInvite+"; " ;
				invi.setText(tmp);
			}
			vue.getMainPanel().remove(panelInvite);
			vue.getMainPanel().add(panelAct);
			vue.refresh();
		}else if(action.equals("ajoutListe")){
			if (agenda.getSelect() != null){
				((DefaultListModel)newListe.getModel()).addElement(agenda.getSelect());
				agenda.removeString(agenda.getSelect());
			}
		}else if(action.equals("retireListe")){
			if (select != null){
				agenda.addString(select);
				((DefaultListModel)newListe.getModel()).removeElement(select);
			}
		}else if(action.equals("retourAct")){
			vue.getMainPanel().remove(panelDetails);
			email.setText("");
			duree.setText("");
			vue.getMainPanel().add(panelAct);
			vue.getRetour().setEnabled(true);
			vue.refresh();
		}else if(action.equals("okAct")){
			vue.getMainPanel().remove(panelDetails);
			vue.getMainPanel().add(panelAct);
			vue.getRetour().setEnabled(true);
			vue.refresh();
		}else if(action.equals("details")){
			vue.getMainPanel().remove(panelAct);
			vue.getMainPanel().add(panelDetails);
			vue.getRetour().setEnabled(false);
			vue.refresh();
		}
	}
	
	/**
	* Methode qui montre la liste d'invite et la liste des contacts pour l'ajout dans reunion */
	public void showTwoLists(){
		
		panelInvite = new JPanel(new BorderLayout());
		JPanel panelBtn = new JPanel();
		JButton valider = new JButton("Valider");
		JButton cancel = new JButton("Annuler");
		JLabel lblTitre2 = new JLabel("<html>Liste d'invit&eacute;s</html>");
		JLabel lblTitre = new JLabel("Contacts");
		agenda = new ContactCtrl();
		JScrollPane scroll =  agenda.getPanelListe();
		
		JPanel panel2Liste = new JPanel(new GridLayout(1,2));
		
		JPanel listeInvite = new JPanel(new BorderLayout());
		JPanel listeInvite2 = new JPanel(new BorderLayout());
		JPanel panelButton = new JPanel(new GridLayout(1,2));
		JPanel panelButton2 = new JPanel(new GridLayout(1,2));
		JButton right = new JButton("Ajouter");
		JButton left = new JButton("Retirer");
		vue.getMainPanel().remove(panelAct);
		vue.getMainPanel().add(panelInvite);
		panelInvite.add(panel2Liste,BorderLayout.CENTER);
		panelInvite.add(panelBtn,BorderLayout.SOUTH);
		panel2Liste.add(listeInvite);
		panel2Liste.add(listeInvite2);
		
		panelBtn.add(valider);
		valider.addActionListener(this);
		valider.setActionCommand("validerListe");
		panelBtn.add(cancel);
		cancel.addActionListener(this);
		cancel.setActionCommand("annulerListe");
		
		newListe = new JList(new DefaultListModel());
		newListe.addMouseListener(this);
		lblTitre.setHorizontalAlignment(SwingConstants.CENTER);
		lblTitre2.setHorizontalAlignment(SwingConstants.CENTER);
		listeInvite.add(lblTitre, BorderLayout.NORTH);
		listeInvite2.add(lblTitre2, BorderLayout.NORTH);
		JScrollPane scroll2 = new JScrollPane(newListe);
		listeInvite.add(scroll, BorderLayout.CENTER);
		listeInvite2.add(scroll2, BorderLayout.CENTER);
		listeInvite.add(panelButton, BorderLayout.SOUTH);
		listeInvite2.add(panelButton2, BorderLayout.SOUTH);
		panelButton2.add(left);
		panelButton.add(right);
		
		right.addActionListener(this);
		right.setActionCommand("ajoutListe");
		left.addActionListener(this);
		left.setActionCommand("retireListe");
		vue.refresh();
	}
	

	public void mouseClicked(MouseEvent e){
		if (e.getSource() instanceof JTextField ){
			this.showTwoLists();
			if (invi.getText().length() != 0){
				String[] listing = invi.getText().split("; ");
				for (String tmp : listing){
					agenda.removeString(tmp);
					((DefaultListModel)newListe.getModel()).addElement(tmp);
				}
			}
		}
		if (e.getSource() instanceof JList ){
			try {
				int index = newListe.locationToIndex(e.getPoint());
				DefaultListModel tab = (DefaultListModel)( newListe.getModel());
				String cle = (String)tab.get(index);
				select = cle ;
			}catch (ArrayIndexOutOfBoundsException exc){
				System.out.println(exc.getMessage());
			}
		}
		vue.refresh();
	}


//######################################################################################
//							public methode
//######################################################################################

	/**
	* Methode qui affiche un panel d'ajout de cours avec les champs approprie
	*/	
	public void setPanelCourse(){
		
		debutMiseEnPlace("Nouveau cours");
			
			prof = new JTextField(15);
			mati = new JTextField(15);
			lieu = new JTextField(15);
		//************************************************ creation des label pas forcement utils et panel de mise en place
				
			JLabel lieuLbl = new JLabel("<html>Lieu :&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  </html>");
			JLabel profLbl = new JLabel("Professeur :");
			JLabel matiLbl = new JLabel("<html>Mati&egrave;re :&nbsp; &nbsp; &nbsp; &nbsp;</html>");
			
			JPanel motifPanel = new JPanel();
			JPanel horairePanel = new JPanel();
			JPanel repetPanel = new JPanel();
			
			JPanel bouttonPanel = new JPanel();
			JPanel heurePanel = new JPanel();
			JPanel profPanel = new JPanel();
			JPanel lieuPanel = new JPanel();
			JPanel matiPanel = new JPanel();
			JPanel contentPanel = new JPanel();
			
		//************************************************mise en place
			textPane.setLayout(new BorderLayout());
			contentPanel.setLayout(new GridLayout(6,1));
			textPane.add(motifPanel,BorderLayout.NORTH);
			textPane.add(contentPanel,BorderLayout.CENTER);
			textPane.add(bouttonPanel,BorderLayout.SOUTH);
			
			contentPanel.add(heurePanel);
			contentPanel.add(horairePanel);
			contentPanel.add(lieuPanel);
			contentPanel.add(profPanel);
			contentPanel.add(matiPanel);		
			contentPanel.add(repetPanel);
			// contentPanel.add(bouttonPanel);

				motifPanel.add(motifLbl);
				motifPanel.add(motif);
				
				heurePanel.add(debLbl,FlowLayout.LEFT);
				heurePanel.add(debH);
				heurePanel.add(sep1);
				heurePanel.add(debM);
				
				horairePanel.add(finLbl,FlowLayout.LEFT);
				horairePanel.add(finH);
				horairePanel.add(sep2);
				horairePanel.add(finM);
				
				lieuPanel.add(lieuLbl);
				lieuPanel.add(lieu);
				
				profPanel.add(profLbl);
				profPanel.add(prof);
				
				matiPanel.add(matiLbl);
				matiPanel.add(mati);
				
				repetPanel.add(jour);
				repetPanel.add(semaine);
				
				bouttonPanel.add(validate);
				bouttonPanel.add(cancel);
		
		//************************************************mise en forme
			validate.setActionCommand("validCours");
			 textPane.setBackground(Color.black);
                        textPane.setForeground(Color.white);
                        
                        contentPanel.setBackground(Color.black);
                        
                        motifPanel.setBackground(Color.black);
                        motifLbl.setForeground(Color.white);
                        
                        heurePanel.setBackground(Color.black);
                        horairePanel.setBackground(Color.black);
                        finLbl.setForeground(Color.white);
                        debLbl.setForeground(Color.white);
                        sep1.setForeground(Color.white);
                        sep2.setForeground(Color.white);
                        
                        lieuPanel.setBackground(Color.black);
                        profPanel.setBackground(Color.black);
                        matiPanel.setBackground(Color.black);
                        profLbl.setForeground(Color.white);
                        lieuLbl.setForeground(Color.white);
                        matiLbl.setForeground(Color.white);
                        
                        repetPanel.setBackground(Color.black);
                        repetLbl.setForeground(Color.white);
                        jour.setBackground(Color.black);
                        semaine.setBackground(Color.black);
                        jour.setForeground(Color.white);
                        semaine.setForeground(Color.white);
                        
                        bouttonPanel.setBackground(Color.black);
                        
		//************************************************rafraichissement

		vue.refresh();
	}
	
	
	/**
	* Methode qui affiche un panel d'ajout de rendez vous avec les champs approprie
	*/		
	public void setPanelRdv(){
	
		this.debutMiseEnPlace("Rendez-vous");
			
			invi = new JTextField(15);
			invi.addMouseListener(this);
			lieu = new JTextField(15);
		//************************************************ creation des label pas forcement utils et panel de mise en place
			JLabel motifLbl = new JLabel("Motif :");
			JLabel debLbl = new JLabel("<html>D&eacute;but :</html>");
			JLabel finLbl = new JLabel("<html> 	Fin : &nbsp;  &nbsp; &nbsp; </html>");
			JLabel repetLbl = new JLabel("<html><div style=\"margin-left:12px;\">R&eacute;p&eacute;tition :</div></html>");
			JLabel sep1 = new JLabel(":");
			JLabel sep2 = new JLabel(":");

		
			JLabel lieuLbl = new JLabel("<html>Lieu :&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  </html>");
			JLabel listLbl = new JLabel("<html>Invit&eacute; :&nbsp; &nbsp; &nbsp; &nbsp;</html>");
			
			JPanel motifPanel = new JPanel();
			JPanel horairePanel = new JPanel();
			JPanel repetPanel = new JPanel();
			
			JPanel bouttonPanel = new JPanel();
			JPanel heurePanel = new JPanel();
			JPanel lieuPanel = new JPanel();
			JPanel listPanel = new JPanel();
			JPanel contentPanel = new JPanel();
			
		//************************************************mise en place
			textPane.setLayout(new BorderLayout());
			contentPanel.setLayout(new GridLayout(5,1));
			textPane.add(motifPanel,BorderLayout.NORTH);
			textPane.add(contentPanel,BorderLayout.CENTER);
			textPane.add(bouttonPanel,BorderLayout.SOUTH);
			contentPanel.add(heurePanel);
			contentPanel.add(horairePanel);
			contentPanel.add(lieuPanel);
			contentPanel.add(listPanel);		
			contentPanel.add(repetPanel);
			// contentPanel.add(bouttonPanel);

				motifPanel.add(motifLbl);
				motifPanel.add(motif);
				
				heurePanel.add(debLbl,FlowLayout.LEFT);
				heurePanel.add(debH);
				heurePanel.add(sep1);
				heurePanel.add(debM);
				
				horairePanel.add(finLbl,FlowLayout.LEFT);
				horairePanel.add(finH);
				horairePanel.add(sep2);
				horairePanel.add(finM);
				
				lieuPanel.add(lieuLbl);
				lieuPanel.add(lieu);
				
				listPanel.add(listLbl);
				listPanel.add(invi);
				
				repetPanel.add(jour);
				repetPanel.add(semaine);
				
				bouttonPanel.add(validate);
				bouttonPanel.add(cancel);
		
		//************************************************mise en forme
					
			validate.setActionCommand("validRDV");
			  textPane.setBackground(Color.black);
                        textPane.setForeground(Color.white);
                        
                        contentPanel.setBackground(Color.black);
                        
                        motifPanel.setBackground(Color.black);
                        motifLbl.setForeground(Color.white);
                        
                        heurePanel.setBackground(Color.black);
                        horairePanel.setBackground(Color.black);
                        finLbl.setForeground(Color.white);
                        debLbl.setForeground(Color.white);
                        sep1.setForeground(Color.white);
                        sep2.setForeground(Color.white);
                        
                        lieuPanel.setBackground(Color.black);
                        listPanel.setBackground(Color.black);
                        lieuLbl.setForeground(Color.white);
                        listLbl.setForeground(Color.white);
                        
                        repetPanel.setBackground(Color.black);
                        repetLbl.setForeground(Color.white);
                        jour.setBackground(Color.black);
                        semaine.setBackground(Color.black);
                        jour.setForeground(Color.white);
                        semaine.setForeground(Color.white);
                        
                        bouttonPanel.setBackground(Color.black);

		//************************************************rafraichissement

		vue.refresh();
	}
	
	/**
	* Methode qui affiche un panel d'ajout de reunion avec les champs approprie
	* le bouton details permet d'appeler un aute methode d'ajout de details
	*/		
	public void setPanelMeeting(){
		this.setPanelDetails();
		
		debutMiseEnPlace("<html>Nouvelle r&eacute;union</html>");
						
			details = new JButton("<html>D&eacute;tails</html>");
			lieu = new JTextField(15);
			init = new JTextField(15);
			invi = new JTextField(15);
		//************************************************ creation des label pas forcement utils et panel de mise en place
			JLabel motifLbl = new JLabel("Motif :");
			JLabel debLbl = new JLabel("<html>D&eacute;but :</html>");
			JLabel finLbl = new JLabel("<html> 	Fin : &nbsp; &nbsp; &nbsp; </html>");
			JLabel repetLbl = new JLabel("<html><div style=\"margin-left:12px;\">R&eacute;p&eacute;tition :</div></html>");
			JLabel sep1 = new JLabel(":");
			JLabel sep2 = new JLabel(":");

		
			JLabel lieuLbl = new JLabel("<html>Lieu :&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  </html>");
			JLabel initLbl = new JLabel("Initiateur :");
			JLabel inviLbl = new JLabel("<html>Invit&eacute;s :&nbsp; &nbsp; &nbsp;</html>");
			
			JPanel motifPanel = new JPanel();
			JPanel horairePanel = new JPanel();
			JPanel repetPanel = new JPanel();
			
			JPanel bouttonPanel = new JPanel();
			JPanel heurePanel = new JPanel();
			JPanel initPanel = new JPanel();
			JPanel lieuPanel = new JPanel();
			JPanel inviPanel = new JPanel();
			JPanel contentPanel = new JPanel();
			
		//************************************************mise en place
			textPane.setLayout(new BorderLayout());
			contentPanel.setLayout(new GridLayout(6,1));
			textPane.add(motifPanel,BorderLayout.NORTH);
			textPane.add(contentPanel,BorderLayout.CENTER);
			textPane.add(bouttonPanel,BorderLayout.SOUTH);
			
			contentPanel.add(heurePanel);
			contentPanel.add(horairePanel);
			contentPanel.add(lieuPanel);
			contentPanel.add(initPanel);
			contentPanel.add(inviPanel);		
			contentPanel.add(repetPanel);
			// contentPanel.add(bouttonPanel);

				motifPanel.add(motifLbl);
				motifPanel.add(motif);
				
				heurePanel.add(debLbl,FlowLayout.LEFT);
				heurePanel.add(debH);
				heurePanel.add(sep1);
				heurePanel.add(debM);
				
				horairePanel.add(finLbl,FlowLayout.LEFT);
				horairePanel.add(finH);
				horairePanel.add(sep2);
				horairePanel.add(finM);
				
				lieuPanel.add(lieuLbl);
				lieuPanel.add(lieu);
				
				initPanel.add(initLbl);
				initPanel.add(init);
				
				inviPanel.add(inviLbl);
				inviPanel.add(invi);
				
				repetPanel.add(jour);
				repetPanel.add(semaine);
				
				bouttonPanel.add(details);
				bouttonPanel.add(validate);
				bouttonPanel.add(cancel);
		
		//************************************************mise en forme
			invi.addMouseListener(this);
			details.addActionListener(this);
			validate.setActionCommand("validReunion");
			details.setActionCommand("details");
			textPane.setBackground(Color.black);
                        textPane.setForeground(Color.white);
                        
                        contentPanel.setBackground(Color.black);
                        
                        motifPanel.setBackground(Color.black);
                        motifLbl.setForeground(Color.white);
                        
                        heurePanel.setBackground(Color.black);
                        horairePanel.setBackground(Color.black);
                        finLbl.setForeground(Color.white);
                        debLbl.setForeground(Color.white);
                        sep1.setForeground(Color.white);
                        sep2.setForeground(Color.white);
                        
                        lieuPanel.setBackground(Color.black);
                        initPanel.setBackground(Color.black);
                        inviPanel.setBackground(Color.black);
                        initLbl.setForeground(Color.white);
                        lieuLbl.setForeground(Color.white);
                        inviLbl.setForeground(Color.white);
                        
                        repetPanel.setBackground(Color.black);
                        repetLbl.setForeground(Color.white);
                        jour.setBackground(Color.black);
                        semaine.setBackground(Color.black);
                        jour.setForeground(Color.white);
                        semaine.setForeground(Color.white);
                        
                        bouttonPanel.setBackground(Color.black);

			
		//************************************************rafraichissement

		vue.refresh();
	}
	
	/**
	* Methode qui affiche un panel d'ajout d'activite simple avec les champs approprie
	*/		
	public void setPanelActivity(){
		
		debutMiseEnPlace("<html>Nouvelle activit&eacute;</html>");
		
		//************************************************ creation des label pas forcement utils et panel de mise en place
			JLabel motifLbl = new JLabel("Motif :");
			JLabel debLbl = new JLabel("<html>D&eacute;but :</html>");
			JLabel finLbl = new JLabel("<html> 	Fin : &nbsp; &nbsp; </html>");
			JLabel repetLbl = new JLabel("<html><div style=\"margin-left:12px;\">R&eacute;p&eacute;tition :</div></html>");
			JLabel sep1 = new JLabel(":");
			JLabel sep2 = new JLabel(":");
		
			JPanel motifPanel = new JPanel();
			JPanel horairePanel = new JPanel();
			JPanel repetitionPanel = new JPanel();
			JPanel bouttonPanel = new JPanel();
			JPanel repetPanel = new JPanel();
			JPanel heurePanel = new JPanel();
			
		//************************************************mise en place
			textPane.setLayout(new GridLayout(5,1));
			textPane.add(motifPanel);
			textPane.add(heurePanel);
			textPane.add(horairePanel);
			textPane.add(repetitionPanel);
			textPane.add(bouttonPanel);
			
			motifPanel.add(motifLbl);
			motifPanel.add(motif);
			
			heurePanel.add(debLbl,FlowLayout.LEFT);
			heurePanel.add(debH);
			heurePanel.add(sep1);
			heurePanel.add(debM);
			
			horairePanel.add(finLbl,FlowLayout.LEFT);
			horairePanel.add(finH);
			horairePanel.add(sep2);
			horairePanel.add(finM);
			
			repetitionPanel.setLayout(new BorderLayout());
			repetitionPanel.add(repetLbl,BorderLayout.NORTH);
			repetitionPanel.add(repetPanel,BorderLayout.CENTER);
			
			repetPanel.add(jour);
			repetPanel.add(semaine);
			bouttonPanel.add(validate);
			bouttonPanel.add(cancel);
		
		//************************************************mise en forme
			 textPane.setBackground(Color.black);
                        textPane.setForeground(Color.white);
                        
                        motifPanel.setBackground(Color.black);
                        motifLbl.setForeground(Color.white);
                        
                        heurePanel.setBackground(Color.black);
                        horairePanel.setBackground(Color.black);
                        finLbl.setForeground(Color.white);
                        debLbl.setForeground(Color.white);
                        sep1.setForeground(Color.white);
                        sep2.setForeground(Color.white);
                        
                        repetitionPanel.setBackground(Color.black);
                        repetLbl.setForeground(Color.white);
                        repetPanel.setBackground(Color.black);
                        jour.setBackground(Color.black);
                        semaine.setBackground(Color.black);
                        jour.setForeground(Color.white);
                        semaine.setForeground(Color.white);
                        
                        bouttonPanel.setBackground(Color.black);

			validate.setActionCommand("validActivite");
		//************************************************rafraichissement
		
		vue.refresh();
	}
	
	/**
	* Methode qui prepare l'affichage des panneaux d'activite
	*/		
	public void viewPanelActivity(){
		vue.getMainPanel().removeAll();
		//ajout du changeur de date
		chooseDateAct();
		
		vue.getBackButton().setEnabled(false);
		//ajout du panneau principal pour ajouter l'activitee
		panelAct = new JPanel();
		panelAct.setLayout(new BorderLayout());
		
		//ajout du titre de la page 
		typeActivityLbl = new JLabel("<html>Nouvelle activit&eacute;e</html>");
		typeActivityLbl.setFont(new Font("Arial", Font.BOLD, 20));
		typeActivityLbl.setHorizontalAlignment(SwingConstants.CENTER);
		typeActivityLbl.setPreferredSize(new Dimension(0,30));
		
		panelAct.add(typeActivityLbl, BorderLayout.NORTH);
		
		//ajout du panneau contenant les champs
		textPane = new JPanel();
		
		vue.getMainPanel().add(panelAct,BorderLayout.CENTER);
		panelAct.add(textPane, BorderLayout.CENTER);
		panelAct.setBackground(Color.black);
        typeActivityLbl.setForeground(Color.white);

		vue.getBackButton().setEnabled(true);
		
	}
	
	/**
	* Debut de la mise en place de pannel 
	* @param type nom du type d'activite pour le label d'activite
	*/	
	public void debutMiseEnPlace(String type){
		this.viewPanelActivity();
		typeActivityLbl.setText(type);
		
		//************************************************ Init des elements necessaire ou l'on peut recuperer les donnes
			motif = new JTextArea(3,15);
			motif.setLineWrap(true);
			motif.setWrapStyleWord(true);
			debH = new JFormattedTextField(mask);
			debM = new JFormattedTextField(mask);
			finH = new JFormattedTextField(mask);
			finM = new JFormattedTextField(mask);
			debH.setColumns(2);
			debM.setColumns(2);
			finH.setColumns(2);
			finM.setColumns(2);
			
			jour = new JCheckBox("Tous les jours");
			semaine = new JCheckBox("Toute les semaines");
			validate = new JButton("Valider");
			cancel = new JButton("Annuler");
			
			
			 motifLbl = new JLabel("Motif :");
			 debLbl = new JLabel("<html>D&eacute;but :</html>");
			 finLbl = new JLabel("<html> 	Fin : &nbsp;  &nbsp; &nbsp; </html>");
			 repetLbl = new JLabel("<html><div style=\"margin-left:12px;\">R&eacute;p&eacute;tition :</div></html>");
			 sep1 = new JLabel(":");
			 sep2 = new JLabel(":");
			 
			 validate.addActionListener(controller);
			cancel.addActionListener(controller);
			cancel.setActionCommand("retour");
	}
	
	/**
	* Methode qui met en place le panneau de details pour les reunion avec le site et la duree 
	*/	
	public void setPanelDetails(){
		panelDetails = new JPanel();
		panelDetails.setBackground(Color.black);
		duree = new JTextField(18);
		email = new JTextField(18);
		JLabel lbl1 = new JLabel("<html>dur&eacute;e de la r&eacute;union :");
		lbl1.setForeground(Color.white);
		panelDetails.add(lbl1);
		panelDetails.add(duree);
		JButton annuler = new JButton("Annuler");
		JButton valider = new JButton("Ok");
		JLabel lbl2 =new JLabel("Site web, ou email de contact :");
		lbl2.setForeground(Color.white);
		panelDetails.add(lbl2);
		panelDetails.add(email);
		
		panelDetails.add(annuler);
		panelDetails.add(valider);
		valider.addActionListener(this);
		annuler.addActionListener(this);
		annuler.setActionCommand("retourAct");
		valider.setActionCommand("okAct");
		
	}
	
	/**
	* Methode qui permet d'afficher le changeur de date tout en haut pour ameliorer l'ergonomie de l'application
	*/	
	public void chooseDateAct(){
		// mise en place du changement de date par fleche
		 JButton prevD, nextD;
		 
		 JPanel moveDate;
			dateChoosen = new JLabel(vue.getDateChoosenLbl().split(" ")[1]);
		moveDate = new JPanel();
		vue.getMainPanel().add(moveDate, BorderLayout.NORTH);
		dateChoosen.setText(vue.getDateChoosenLbl());
		prevD = new JButton(new ImageIcon("data/img/agenda/prev.png"));
		nextD = new JButton(new ImageIcon("data/img/agenda/next.png"));
		
		
		moveDate.setPreferredSize(new Dimension(0,20));
		moveDate.setLayout(new BorderLayout());
		moveDate.add(prevD,BorderLayout.WEST);
		moveDate.add(dateChoosen,BorderLayout.CENTER);
		moveDate.add(nextD,BorderLayout.EAST);
				
		prevD.addActionListener(controller);
		prevD.setActionCommand("prevDay");
		prevD.setPreferredSize(new Dimension(25,0));
				
		nextD.addActionListener(controller);
		nextD.setActionCommand("nextDay");
		nextD.setPreferredSize(new Dimension(25,0));
			
		dateChoosen.setHorizontalAlignment(SwingConstants.CENTER);
		
		dateChoosen.setBackground(Color.black);
		dateChoosen.setForeground(Color.white);
		moveDate.setBackground(Color.black);
		moveDate.setForeground(Color.white);
		nextD.setBackground(Color.black);
		prevD.setBackground(Color.black);
		
	}

	/**
	* Methode qui permet de changer la date lors des deplacement de jour en jour
	* @param newDate la nouvelle date choisie
	*/		
	public void setDateChoosen(String newDate){
		dateChoosen.setText(newDate);
		vue.refresh();
	}

	

//######################################################################################
//								getters
//######################################################################################
	/**
	* Retourne le panneaux d'ajout d'activite
	* @return panelAct for adding activity */
	public JPanel getActivityPanel() { return panelAct ; }

	/**
	* Retourne le motif
	* @return motif Contenu dans le JTextArea */
	public JTextArea getMotif(){ return motif; }

	/**
	* Retourne l'heure de debut
	* @return debH Contenu dans le JTextField */
	public JTextField getHeureD(){ return debH; }

	/**
	* Retourne les minutes pour l'heure de debut 
	* @return debM Contenu dans le JTextField */
	public JTextField getMinuteD(){ return debM; }

	/**
	* Retourne l'heure de fin
	* @return finH Contenu dans le JTextField */
	public JTextField getHeureF(){ return finH; }

	/**
	* Retourne les minutes pour l'heure de fin
	* @return finM Contenu dans le JTextField */
	public JTextField getMinuteF(){ return finM; }

	/**
	* Retourne l'email
	* @return email Contenu dans le JTextField */
	public JTextField getMail(){ return email; }

	/**
	* Retourne la duree 
	* @return duree Contenu dans le JTextField */
	public JTextField getDuree(){ return duree; }

	/**
	* Retourne la JCheckBox 
	* @return JCheckBox pour la repetition */
	public JCheckBox[] getRepetitionBox(){ return new JCheckBox[]{jour, semaine} ;} 

	/**
	* Retourne la repetition
	* @return ret */
	public int getRepetition(){ 
		int ret = 0;
		ret = (jour.isSelected()) ? 1 : 0 ;
		ret += (semaine.isSelected()) ? 2 : 0 ; 
		return ret;
	}

	/**
	* Retourne le lieu
	* @return lieu le lieu de l'activite */
	public JTextField getLieu(){ return lieu; }

	/**
	* Retourne le prof
	* @return prof le prof du cours */
	public JTextField getProf(){ return prof; }

	/**
	* Retourne la matiere
	* @return mati la matiere du cours */
	public JTextField getMatiere(){ return mati; }

	/**
	* Retourne l'initiateur
	* @return init l'initateur de l'activite */
	public JTextField getInitiateur(){ return init; }

	/**
	* Retourne un invite
	* @return invi un invite à l'activite */
	public JTextField getInvite(){ return invi; }

	/**
	* Retourne la liste des invites
	* @return invi La liste des invites */
	public JTextField getListe(){ return invi;}

	/**
	* Retourne la validation
	* @return validate */
	public JButton getValidate() { return validate; }
	
}